package com.nidu.demo.user.gateway;

import com.nidu.demo.user.model.UserPosition;

import java.util.Set;
import java.util.List;
import java.util.Map;

/**
 * 用户 - 职位绑定关系网关接口
 * 提供领域层对用户职位关系的访问能力
 */
public interface UserPositionGateway {

    /**
     * 绑定职位到用户（新增绑定）
     */
    void bindUserPosts(Long userId, Set<Long> postIds);

    /**
     * 重新绑定职位（先删再增）
     */
    void rebindUserPosts(Long userId, Set<Long> postIds);

    /**
     * 移除用户的所有职位绑定
     */
    void removeUserPosts(Long userId);

    /**
     * 移除用户的所有职位绑定
     */
    void removePostUsers(Long postId);

    /**
     * 移除用户列表下的所有职位绑定
     */
    void removeUsersPosts(Set<Long> userIds);

    /**
     * 移除职位列表下的所有用户绑定
     */
    void removePostsUsers(Set<Long> postIds);

    /**
     * 查询用户绑定的职位ID列表
     */
    Set<Long> getPostIdsByUserId(Long userId);

    /**
     * 查询职位下绑定的所有用户ID列表
     */
    Set<Long> getUserIdsByPostId(Long postId);

    /**
     * 查询用户ID列表绑定的职位ID列表
     */
    Map<Long, List<UserPosition>> getByUserIds(Set<Long> userIds);

    /**
     * 查询用户ID列表绑定的职位ID列表
     */
    Map<Long, List<UserPosition>> getByPostIds(Set<Long> postIds);

}
